#include<bits/stdc++.h>
using namespace std;
bool vis[105][105];
int answer,R,C;
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
int high[105][105];
void dsf(int x,int y,int sum)
{
	answer=max(answer,sum);
	int tx,ty;
	for(int i=0;i<4;i++)
	{
		tx=x+dx[i],ty=y+dy[i];
		if (tx >= 0 && tx < R && ty >= 0 && ty < C &&!vis[tx][ty] && high[tx][ty] >= high[x][y])
		{
			vis[x][y]=1;
			dsf(tx,ty,sum+1);
			vis[x][y]=0;
		}
	}
}
int main()
{
	cin >> R >> C;
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		cin >> high[i][j];
	}
	for(int i=0;i<R;i++)
	{
		for(int j=0;j<C;j++)
		{
			vis[i][j]=1;
			dsf(i,j,1);
			vis[i][j]=0;
		}
	}
	cout << answer;
	return 0;
}